home *** CD-ROM | disk | FTP | other *** search
- Doorways in STadel
-
- Version 3.2a of STadel supports `doors', which are a way for a
- sysop to allow user access to external programs. STadel supports
- doorways via the `!' prefix, which (amazingly enough) works like a
- shell escape in many programs found on the Unix(tm) operating
- system.
-
- The user interface to doors is very simple. The user merely
- types a `!' followed by the name of the doorway. For example, if
- you've got zmodem file transfers enabled under the names `rz' (to
- read a file via zmodem) and `ez' (to enter a file via zmodem), a
- user would type `!rz FOO' to read FOO via Zmodem and `!ez FOO' to
- enter foo via Zmodem.
-
- The sysop can control access to doorways by the users access
- level (normal user, aide, or sysop) and by the type of room that
- the user is currently in. A doorway may allow the user to pass a
- command tail in (in which case the system scans the command tail
- to make sure that there are no `:'s or `\'s in it.) and/or it may
- append the users name to the command line. The list of valid
- doorways is kept in an ordinary ascii file (CTDLDOOR.SYS) in your
- #sysDir. CTDLDOOR.SYS is composed of lines of the form
-
- <doorname> <mode> <program-name> [command tail] [#comment]
-
- <doorname> is the name the BBS uses for this doorway.
-
- <mode> tells STadel what permissions/restrictions there are on
- this command. It is composed of the following characters:
-
- u - anyone may use this doorway.
- a - only aides and sysops may use this doorway.
- s - only sysops may use this doorway.
- d - this doorway must be executed from within a
- directory room.
- r - (for above) the directory must be readable.
- w - (for above) the directory must be writable.
- t - the user may provide a command tail for this
- command.
- n - pass the username to this command as part of
- the command tail.
- l - the rest of the mode string is the directory
- to link this command to. If your mode string
- ends with `lc:\bin', stadel will make `c:\bin'
- your current directory when running this
- command.
- @ - the rest of the mode string is the room that
- this command is valid in. If you set up a
- room name, this door will _not_ work outside
- of the given room (@Mail means that this
- command will only work in Mail>.) You may
- not use both this command and the `l' command.
-
- <program-name> is the full pathname -- including extention -- of
- the program associated with this doorway.
-
- [command tail] is the optional command tail to pass to this
- doorway upon execution. If the doorway allows a user-supplied
- command tail, it will be appended to this command tail.
- (usernames are appended after everything else)
-
- [#comment] is a descriptive text to print out whenever a user does
- a !? to se what the current doors are.
-
- For example, take the case above. To implement `!rz' and `!ez',
- the sysop would implement the following doorways in CTDLDOOR.SYS:
-
- > rz udrt c:\bin\rzsz.ttp # zmodem download
- > ez udwt c:\bin\rzsz.ttp -n # zmodem upload
- ^ ^ ^ ^ ^
- | | | | +----- descriptive comment.
- | | | +----------- command tail (optional.)
- | | +------------------------- full program name.
- | +-------------------------------- permissions.
- +------------------------------------ doorway name.
-
- The mode of rz and ez is: `u' = everybody can execute this
- command; `d' = this command must be executed in a directory
- room; `r'/`w' = this command must be executed in a
- readable/writable directory room; and `t' allow the user to pass
- in a command tail.
-
- If you do a shell escape inside of a directory room, the program
- will have it's working directory set to the directory that's
- associated with the room.
-
- There are a few things to be wary of with shell escapes:
-
- 1) if you have a user-accessable command interpreter or a
- interactive program that will let you screw around with
- directories, an unscrupulous user could totally subvert your
- system.
-
- 2) If you have an interactive shell escape and the user drops
- carrier, the program will likely wait up until the next call
- comes in -- and the next caller will have possibly illegal access
- to the system.
-
- 3) If your application depends on any data or overlay files, you
- should be sure to use the 'l' switch in the mode part of that
- door's line in your ctdldoor.sys file so as to ensure that your
- application can find the files it needs to run.
-
- 4) If you have multiple doors with the same name, place the doors
- with the most restricted usage (e.g. Sysop only doors, Aide only
- doors, doors that are bound to a room...) last in your
- ctdldoor.sys file.
-
- Door names that have special meaning to the system.
-
- Some door names have special meaning to STadel; these doors are
- bound into the system so that you do not have to do !<name> to
- access them (though you may access them that way if you wish.)
-
- The first door with special meaning is the `shell' door. STadel
- will, in the absence of a #shell in your ctdlcnfg.sys, use the
- last `shell' door in your ctdldoor.sys file for the ^Lo command.
-
- The second door is the `login' door. When a user logs in, STadel
- will try to run this door. Normal restrictions apply, so you may
- have different login doors for people on modem, people on the
- console, normal users, and aides. If this door is run, your
- LOGIN.BLB file, if any, will not be displayed.
-
- The third door is the `editor' door. This door is an external
- editor that can be invoked via the [o]utside editor command from
- the message editor. Citadel invokes this editor as `<editor>
- <message-temp-file-name>', so if the editor you want to use does
- not understand command lines, DON'T USE IT! Normal restrictions
- apply, so if you want users to have access to external editors,
- you may.
-